package futbol

import org.junit.Assert
import org.junit.Before
import org.junit.Test

class TestDemeritos {
	Jugador jugadorA
	Partido partido
	ObserverAmigos amigos
	ObserverPunisher punisher
	ObserverSomosDiez dies
	Estandar estandar
	
	@Before
	def void init(){
	estandar = new Estandar
	jugadorA= new Jugador
	jugadorA.estado =  estandar 
	partido= new Partido
	punisher= new ObserverPunisher
	amigos= new ObserverAmigos
	dies= new ObserverSomosDiez
	}
	
	@Test // test para probar los demeritos
	def testDeDemeritos(){
		//probamos que no se apiquen sin razon
		jugadorA.inscribirmeAPartido(partido)
		jugadorA.bajateDeUnPartido(partido, new Jugador)
		Assert::assertEquals(0,jugadorA.demeritos,0.01)
		
		//probamos si se aplican bien
		jugadorA.inscribirmeAPartido(partido)
		jugadorA.bajateDeUnPartido(partido, null)
		Assert::assertEquals(1,jugadorA.demeritos,0.01)
		
		//ahora probamos si se acumulan bien
		jugadorA.inscribirmeAPartido(partido)
		jugadorA.bajateDeUnPartido(partido, null)
		Assert::assertEquals(2,jugadorA.demeritos,0.01)
	}
	@Test // test para probar los demeritos junto con los decorators
	def testDeDemeritosConDecorators(){
		partido.agregaObservers(amigos)
		partido.agregaObservers(dies)
		partido.agregaObservers(punisher)
		
	
		
		//probamos que no se apiquen sin razon
		jugadorA.inscribirmeAPartido(partido)
		jugadorA.bajateDeUnPartido(partido, new Jugador)
		Assert::assertEquals(0,jugadorA.demeritos,0.01)
		
		//probamos si se aplican bien
		jugadorA.inscribirmeAPartido(partido)
		jugadorA.bajateDeUnPartido(partido, null)
		Assert::assertEquals(1,jugadorA.demeritos,0.01)
		
	
	}
}